
#include<iostream>
#include <string.h>
#include <queue>
using namespace std;
typedef struct node{
    int data;
    struct node *lchild;
    struct node *rchild;
}BTNode;
typedef struct node *BTree;
BTNode *CreateBT2(int *post,int *in,int n);
void PreOrder(BTNode *b);
int main()
{
	BTree BT;
	int i=0;
	int N;
	cin>>N;
	int str1[N],str2[N];
	for(i=0;i<N;i++){
		cin>>str1[i];
	}
	for(i=0;i<N;i++){
		cin>>str2[i];
	}
	BT=CreateBT2(str1,str2,N);
	cout<<"Preorder:";
	PreOrder(BT);
	return 0;
}
BTNode *CreateBT2(int *post,int *in,int n)
{
	BTNode *b;
	int r,*p;
	int k;
	if(n<=0) return NULL;
	r=*(post+n-1);
	b= new BTNode;
	b->data=r;
	for(p=in;p<in+n;p++)
	if(*p==r) break;
	k=p-in;
	b->lchild=CreateBT2(post,in,k);
	b->rchild=CreateBT2(post+k,p+1,n-k-1);
	return b;
} 
void PreOrder(BTNode *b)
{
	if(b!=NULL)
	{
		cout<<" "<<b->data;
		PreOrder(b->lchild);
		PreOrder(b->rchild);
	}
}
